package work3;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 *
 *
 *  编程获取两个指定字符串中的最大相同子串。
 *
 *  如： s1="asdafghjka", s2="aaasdfg" 他们的最大子串为"asd"
 *
 *
 * */
public class Test2 {

    public static void main(String arg[]){

        List<String> list = new ArrayList<>(); // 创建一个数组用来保存子串
        String strL = "",strS = "";  //分为长短两个字符串
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入两个字符串  第一个：" );
        String str1 = scanner.next();
        System.out.println("第=个：" );
        String str2 = scanner.next();
        //谁短用谁做循环
        if (str1.length() > str2.length()){
            strL = str1;
            strS = str2;
        } else {
            strL = str2;
            strS = str1;
        }

            String str = "";  // 用来承接子串
            for (int i = 0; i < strS.length(); i++) {
                //每次将循环中的一位加入str中
                    str  += strS.charAt(i);
                    //如果长字符串中不包含str，则重置
                    if (!strL.contains(str)){
                        str = "";
                    } else {
                        //如果包含放入list中
                        list.add(str);
                    }
            }



        int position = 0;
        //list做循环判断最长的子串
        for (int i = 0; i < list.size() ; i++) {
            if (i == 0){
                position = i;
            } else {
                if (list.get(position).length() < list.get(i).length()) {
                    position = i;
                }
            }
        }
        if (list.size() != 0)
            System.out.println("最大子串为：" + list.get(position));
        else
            System.out.println("没有最大子串");
    }
}
